StepFunctionsから呼び出したLambda関数のエラー発生時に、Lambda関数の再試行が行われたか教えてください
困っていた内容
StepFunctionsから実行したLambda関数でエラーが発生しました。 該当のLambda関数には、再試行に「2」が設定されていましたが、再試行されたか、どのように確認すればよいですか。
どう対応すればいいの?
まず、StepFunctionsからLambda関数を呼び出す際の記述方法は、2通りあります。[1]
方法1: Resourceに関数のARNを直接書く 方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定
該当のStepFunctionsの定義を確認すると、Lambda関数は「方法1」で指定されていました。 よって、Lambda関数は「同期呼び出し」「非同期呼び出し」のうち、「同期呼び出し」(デフォルト)で実行されています。
補足: 「方法2」の場合「同期呼び出し」「非同期呼び出し」の指定が可能です。 「方法1」の場合、デフォルトの「同期呼び出し」となります。
そのため、Lambda関数の設定項目である、「非同期呼び出し」の「再試行」回数の設定は、今回は特に利用されず、エラー発生時のリトライは行われていません。
リトライ処理を行うためには、呼び出し側のStepFunctionsの定義に、Lambda関数のリトライを設定する必要があります。
StepFunctions のリトライ処理については、資料[3]をご覧ください。
参考資料
[1] Step FunctionsからLambda関数を実行する書き方2つの違い | DevelopersIO
方法1: Resourceに関数のARNを直接書く
方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定
[2] Step Functions で Lambda を呼び出す - AWS Step Functions
[3] StepFunction リトライ時の待機時間 | DevelopersIO